
/**
 * 随机字符串
 * @param {Number} len
 * @returns {String}
 */
export function noncestr(len = 8) {
    const characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
    const result = []
    for (let i = 0; i < len; i++) {
        result.push(characters.charAt(
            Math.floor(Math.random() * characters.length)
        ))
    }
    return result.join('')
}

/**
 * 单词首字母大写
 * @param {String} str
 * @returns {String}
 */
export function capitalize(str) {
    return String(str).replace(/( |^)[a-z]/g, (s) => s.toUpperCase())
}

/**
 * 汉字 转 Unicode
 * @param {String} str
 * @returns {String}
 */
export function chineseToUnicdoe(str) {
    if (typeof str !== 'string') return ''
    let result = ''
    let temp = ''
    for (let i = 0; i < str.length; i++) {
        temp = str.charAt(i)
        if (/[\u4e00-\u9fa5]/.test(temp)) {
            // charCodeAt() 方法返回0到65535之间的整数，表示给定索引处的UTF-16代码单元
            // slice(-4): 编码后字符不满足4位的用0填充，并截取最后四位
            result += '\\u' + ('00' + temp.charCodeAt(0).toString(16)).slice(-4)
        } else {
            result += temp
        }
    }
    return result
}

/**
 * 中文Unicode解码
 * @param {String} str
 * @returns {String}
 */
export function unicodeDecode(str) {
    return str ? unescape(str.replace(/\\/g, '%')) : ''
}
